<?php
/**
 * 悠络客摄像头
 */

namespace App\Kuafu\Shop\Service\CameraLibrary;

use App\Kuafu\Shop\Enum\CodeEnum;

interface CameraInterface
{
    /**
     * 请求环境配置
     *
     * @return void
     */
    public function init(): void;

    /**
     * 接口请求
     *
     * @return array
     */
    public function curl(): array;

    /**
     * 获取直播流
     *
     * @param string $scheme
     *  阿里云
     *  直播流 支持格式 rtmp、hls、flv
     *  回放流 支持格式 rtmp、hls、flv
     *  悠络客
     *  直播流 支持格式 hflv、hls、rtmp、s_hflv、s_hls
     *  回放流 支持格式 hflv、hls、rtmp、s_hflv、s_hls
     * @param array $streamType
     * [
     *  'rate' => 1000 // 悠络客码率 分 700, 1000
     *  'streamType' => 1 // 阿里云 主码流和辅码流 1 辅码流 0 主码流
     * ]
     *
     * @return array
     */
    public function getLiveStreaming(string $scheme, int $clarity): array;

    /**
     * 心跳维持
     *
     * @return array
     */
    public function heartBeat(): array;

    /**
     * 设备状态
     *
     * @return int
     */
    public function getDeviceStatus(): int;

    /**
     * 本地录像列表
     *
     * @param int $startAt
     * @param int $endAt
     * @return array
     */
    public function localVideoList(int $startAt, int $endAt): array;


    /**
     * 本地录像播放
     *
     * @param int $startAt
     * @param int $endAt
     * @param int $seekTime
     * @param string $scheme
     * @return array
     */
    public function backUrl(int $startAt, int $endAt, int $seekTime, string $scheme = 'flv'): array;

    /**
     * 记录错误日志
     */
    public function logErr(string $title, array $result, \Exception $exception, array $requestParam = []): void;

    /**
     * 调整清晰度
     *
     * @param int $clarity
     * @return int
     */
    public function switchClarity(int $clarity = CodeEnum::CLARITY_TYPE_FLUENCY): int;

    /**
     * 平台-协议转换
     *
     * @param string $scheme
     * @return string
     */
    public function switchScheme(string $scheme): string;

}
